package ssdb

import (
	"github.com/seefan/gossdb"
)

// SSDB 仓储接口(只支持string类型)
type IGoSSDBRepository interface {

	// 插入单个
	// entity  结构体
	// ttl     单位秒 ，0为永不到期
	Set(key string, entity interface{}, ttl int64) (int, error)

	// 插入多个【单次20000个以下】
	// entityMap 结构体字典
	SetMany(entityMap map[string]interface{}) (int64, error)

	//递增字段值
	//key hashid
	//fieid 字段名称
	Incr(key ,field string,num int64) (int64,error)

	//获取递增字段值
	//key hashid
	//res 要获取的字段值
	GetIncr(key string,res map[string]int64) (err error)

	//移除递增
	//key hashid
	RemoveIncr(key string) error

	// 删除单个
	// key key值
	Remove(key ...string) (int64, error)

	//查询单个
	// key         key值
	// result      查询的结果
	Get(key string, result interface{}) error

	//查询多个[只支持string类型]
	// keys        key值切片
	// result      查询的结果切片
	GetMany(keys []string, result interface{}) error

	// 创建内部key（配合直接使用数据库连接（GetClient）使用,其它方法不需要使用内部已调用）
	// prefix 前缀
	// key
	CreateKey(prefix,key string) string

	//获取客户端(使用后需要调用 Close 方法关闭回收)
	GetClient() *gossdb.Client
}
